perm filename MNCRE[CRE,BGB]1 blob
sn#104790 filedate 1974-06-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 LANGUAGE COMPATIBILITY FLAG.
C00006 00003 LINK NAMES DEFINED.
C00008 00004 PROPERTY-TYPE MACROS.
C00010 ENDMK
C⊗;
;LANGUAGE COMPATIBILITY FLAG.
IFNDEF SAIL,< ↓SAIL←← 0 ;-1 FOR SAIL EMBEDDED VERSION.>
;ALTERNATE PDP-10 MNEMONICS.
OPDEF DIP[HRLM]↔OPDEF DAP[HRRM]
OPDEF CAR[HLRZ]↔OPDEF CDR[HRRZ]↔OPDEF DZM[SETZM]
OPDEF LAC[MOVE]↔OPDEF DAC[MOVEM]↔OPDEF GO[JRST]
OPDEF FLOAT[FSC 233]↔OPDEF FIXX[FIX 233000]
OPDEF FLO[FSC 225]
;SAIL LIKE SUBROUTINE LINKAGE.
↓P←←17
DEFINE SUBR(NAME){INTERN NAME↔NAME: ;}
DEFINE CALL(NAME,X1,X2,X3,X4){
IFDIF <> <X1> {PUSH 17,X1↔IFDIF <> <X2> {PUSH 17,X2
IFDIF <> <X3> {PUSH 17,X3↔IFDIF <> <X4> {PUSH 17,X4}}}}
PUSHJ 17,NAME}
DEFINE ARG1<-1(17)>↔DEFINE ARG2<-2(17)>
DEFINE ARG3<-3(17)>↔DEFINE ARG4<-4(17)>
DEFINE SETQ(VAR,LIST){CALL(LIST)↔DAC 1,VAR}
;RETURN FROM AN N-ARGUMENT SUBROUTINE CALL.
DEFINE POP0J <POPJ 17,>
↓POP1J.:SUB 17,[2(2)]↔GO@2(17)↔DEFINE POP1J<GO POP1J.>
↓POP2J.:SUB 17,[3(3)]↔GO@3(17)↔DEFINE POP2J<GO POP2J.>
↓POP3J.:SUB 17,[4(4)]↔GO@4(17)↔DEFINE POP3J<GO POP3J.>
↓POP4J.:SUB 17,[5(5)]↔GO@5(17)↔DEFINE POP4J<GO POP4J.>
;ACCUMULATOR AND TEMPORARY DATA MANAGEMENT.
DEFINE ACCUMULATORS(LIST){ACPTR←←2
FOR AC⊂(LIST)<AC←ACPTR↔ACPTR←←ACPTR+1↔>}
DEFINE DECLARE (LIST){
FOR VARNAM⊂(LIST)<VARNAM: 0↔>}
;FATAL ERROR MESSAGE.
DEFINE FATAL(STR){PUSHJ P,FATAL.↔JFCL[ASCIZ/STR/]}
FATAL.:OUTSTR[BYTE(7)15,12,106,101,124↔"AL - "⊗1↔0]
CDR(P)↔CDR@↔OUTSTR @↔INCHRW↔GO .-1↔LIT
DEFINE WARNING(STR){PUSHJ 17,WARN.↔JFCL[ASCIZ/STR/]}
WARN.:OUTSTR[BYTE(7)15,12,"W","A","R"↔"NING:"⊗1↔0]
CDR(P)↔CDR@↔OUTSTR @↔INCHRW↔POPJ 17,↔LIT
DEFINE CRLF{OUTSTR[BYTE(7)15,12]}
;MACROS TO SAVE AND RESTORE AC'S - SAVAC, GETAC.
DEFINE SAVAC $(N){LAC[XWD 2,[AC2: FOR I←2,N{0↔}]]↔BLT AC2+N-2}
DEFINE GETAC (N){LAC[XWD AC2,2]↔BLT N}
;LINK NAMES DEFINED.
DEFINE LEFT $(NAM,WRD,Z){
IFIDN<><Z><DEFINE NAM(A,Q)<CAR A,WRD(Q)>>
IFDIF<><Z><DEFINE NAM(A,Q)<HLRE A,WRD(Q)>>
DEFINE NAM$.(A,Q)<DIP A,WRD(Q)>
}
DEFINE RIGHT $(NAM,WRD,Z){
IFIDN<><Z><DEFINE NAM(A,Q)<CDR A,WRD(Q)>>
IFDIF<><Z><DEFINE NAM(A,Q)<HRRE A,WRD(Q)>>
DEFINE NAM$.(A,Q)<DAP A,WRD(Q)>
}
LEFT(CW,0) RIGHT(CCW,0)
LEFT(ROW,3)↔ RIGHT(COL,3)
LEFT(DAD,1)↔ RIGHT(SON,1)
LEFT(TYPE,2)↔ RIGHT(RELOC,2)
LEFT(ENDO,3)↔ RIGHT(EXO,3)
LEFT(ALT,4) LEFT(ARC,4) RIGHT(NCNT,4,N)
LEFT(NGON,5)↔ RIGHT(PGON,5)
LEFT(NTIME,6)↔ RIGHT(PTIME,6)
DEFINE CNTRST(A,Q){HLRE A,4(Q)}
DEFINE CNTRS.(A,Q){DIP A,4(Q)}
;-----------------------------------------------------------------
;PROPERTY-TYPE MACROS.
DEFINE MARK (Q,BITS){MOVSI(BITS)↔IORM(Q)2}
DEFINE MARKZ(Q,BITS){MOVSI(BITS)↔ANDCAM(Q)2}
DEFINE TEST (Q,BITS){LAC(Q)2↔TLNN(BITS)}
DEFINE TESTZ(Q,BITS){LAC(Q)2↔TLNE(BITS)}
;PROPERTY-TYPE BITS.
↓WESBIT←←1B0 ;WEST. VIC ONLY.
↓SOUBIT←←1B1 ;SOUTH.
↓EASBIT←←1B2 ;EAST.
↓NORBIT←←1B3 ;NORTH.
↓NFUSE←←1B4 ;NTIME FUSION. POLYGONS ONLY.
↓NFISS←←1B5 ;NTIME FISSION.
↓NEXCT←←1B6 ;NTIME EXACT.
↓PFUSE←←1B7 ;PTIME FUSION.
↓PFISS←←1B8 ;PTIME FISSION.
↓PEXCT←←1B9 ;PTIME EXACT.
↓HOLBIT←←1B10 ;HOLE POLYGON.
↓ARCBIT←←1B11 ;ARC VECTOR.
↓SBIT←←1B12 ;SHAPE NODE.
↓VBIT←←1B13 ;VERTEX NODE.
↓PBIT←←1B14 ;POLYGON NODE.
↓LBIT←←1B15 ;LEVEL NODE.
↓IBIT←←1B16 ;IMAGE NODE.
↓FBIT←←1B17 ;FILM NODE.
;LINK-RELOCATION BITS OF EACH NODE TYPE.
VREL←←604604 ;VERTEX & ARC.
PGNREL←←674654 ;POLYGON.
LVLREL←←620600 ;LEVEL.
IMGREL←←624604 ;IMAGE.
FILREL←←400600 ;FILM.
SHPREL←←410410 ;SHAPE.
;-----------------------------------------------------------------
↓% ←← 400000
↓NODSIZ ←← 8
↓RC←←3